#include "../include/Distributions.hpp"
#include "../include/Density.hpp"
#include "../include/Kernel.hpp"
#include "../include/Particle.hpp"
#include "../include/Resample.hpp"

#define M 10

int main()
{
	double *Y=new double[M];
	mat X=randu<mat>(8,2); 
	for(int i=0;i<M;i++)
	{
		if(i<5)
		{
			Y[i]=1;
		}else{
			Y[i]=0;
		}
	}
	
	mat theta=randu<mat>(2,1);  
	// test Density
	Density::Density_Probit *DP= new Density::Density_Probit(Y,X);
	Distribution::Gaussian *G=new Distribution::Gaussian(10,2,1);
	Kernel_MH<Density::Density_Probit,Distribution::Gaussian> *K= new Kernel_MH<Density::Density_Probit,Distribution::Gaussian>(DP,G);
	Resample::SysResample *R=new Resample::SysResample;
	Particle<Kernel_MH<Density::Density_Probit,Distribution::Gaussian>,Resample::SysResample,Density::Density_Probit> P(K,R,DP,10);	
	P.Step(2);
	P.Filter();
	return 1;
}
